package com.clouddisk.file.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.clouddisk.common.model.PageResult;
import com.clouddisk.file.dto.FileDTO;
import com.clouddisk.file.dto.FileUploadDTO;
import com.clouddisk.file.dto.FolderCreateDTO;
import com.clouddisk.file.entity.File;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface FileService extends IService<File> {

    /**
     * 上传文件
     *
     * @param userId 用户ID
     * @param uploadDTO 上传文件请求
     * @return 文件信息
     */
    FileDTO uploadFile(Long userId, FileUploadDTO uploadDTO);

    /**
     * 创建文件夹
     *
     * @param userId 用户ID
     * @param createDTO 创建文件夹请求
     * @return 文件夹信息
     */
    FileDTO createFolder(Long userId, FolderCreateDTO createDTO);

    /**
     * 获取文件列表
     *
     * @param userId 用户ID
     * @param parentId 父文件夹ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 文件列表
     */
    PageResult<FileDTO> getFileList(Long userId, Long parentId, Integer pageNum, Integer pageSize);

    /**
     * 删除文件
     *
     * @param userId 用户ID
     * @param fileId 文件ID
     */
    void deleteFile(Long userId, Long fileId);

    /**
     * 下载文件
     *
     * @param userId 用户ID
     * @param fileId 文件ID
     * @return 文件字节流
     */
    byte[] downloadFile(Long userId, Long fileId);

    /**
     * 获取用户已使用的存储空间
     *
     * @param userId 用户ID
     * @return 已使用的存储空间(字节)
     */
    Long getUserStorageUsed(Long userId);
} 